首页

欢迎

 

Welcome

欢迎来到这里, 这是一个学习数学、讨论数学的网站.

转到问题

请输入问题号, 例如: 2512

IMAGINE, THINK, and DO
How to be a scientist, mathematician and an engineer, all in one?
--- S. Muthu Muthukrishnan

Local Notes

Local Notes 是一款 Windows 下的笔记系统.

Local Notes 下载

Sowya

Sowya 是一款运行于 Windows 下的计算软件.

详情

下载 Sowya.7z (包含最新版的 Sowya.exe and SowyaApp.exe)


注: 自 v0.550 开始, Calculator 更名为 Sowya. [Sowya] 是吴语中数学的发音, 可在 cn.bing.com/translator 中输入 Sowya, 听其英语发音或法语发音.





注册

欢迎注册, 您的参与将会促进数学交流. 注册

在注册之前, 或许您想先试用一下. 测试帐号: usertest 密码: usertest. 请不要更改密码.


我制作的 slides

Problem

随机显示问题

Problèmes d'affichage aléatoires

软件 >> C++
Questions in category: C++ (C++).

[编程]判断一个整数是否为素数

Posted by haifeng on 2015-01-12 22:59:18 last update 2019-03-04 09:39:17 | Answers (0)


方法一:

使用传统的方法判断, 即对于 $N > 3$, 用 $i=1,3,\ldots, [\sqrt{N}]$ 去试除 $N$, 如果都无法除尽, 则 $N$ 是素数.

不过当 $N$ 很大时, 这个算法效率很低下.

 

方法二:

首先将前 1000 个或 1,000,000 个素数读入内存, 采用二叉查找树的结构.

利用查找方式判定一个整数(在此范围内)是否是素数.

[评论] 这个需要预先得到这 1,000,000 个素数. 即使不考虑这部分所耗的时间, 后续使用二叉查找树, 查找 $N$ 是否在其中也需要花费 $\log_2 N$ 的时间(指时间复杂度).